
Component({
  options: {
    addGlobalClass: true, // 使用公共样式（样式收到父页面和app的样式影响）
  },
  behaviors: [],

  properties: {
    type: { // 属性名
      type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: 'index', // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
    },
    list: { // 属性名
      type: Array, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: [], // 属性初始值（可选），如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { } // 属性被改变时执行的函数（可选），也可以写成在methods段中定义的方法名字符串, 如：'_propertyChange'
    }
  },

  data: {}, // 私有数据，可用于模版渲染

  lifetimes: {
    // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
    attached: function () { },
    moved: function () { },
    detached: function () { },
  },

  // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
  attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
  ready: function() {
  },

  pageLifetimes: {
    // 组件所在页面的生命周期函数
    show: function () {},
  },

  methods: {
    toPage(e) { // 页面跳转
      let target = e.currentTarget.dataset;
      if (target.url) {
        wx.navigateTo({ url: target.url });
      } else {
        console.warn('No Access')
      }
    },
    clickCollect(e) { // 收藏&取消收藏
      let target = e.currentTarget.dataset;
      // console.log(target.index, this.data.list[target.index]);
      if (!getApp().globalData.userInfo || !getApp().globalData.userInfo.memberId) {
        this.triggerEvent('needLogin', {type: 'navigateTo'});
        return false;
      }
      let params = {
        houseId: String(this.data.list[target.index].id),
        memberId: String(getApp().globalData.userInfo.memberId),
        type: this.data.list[target.index].iscollect == 1 ? '0' : '1'
      }
      this.putCollect(params).then(res => {
        if (res == 200) {
          this.data.list[target.index].iscollect = params.type
          this.setData({
            list: this.data.list
          })
        }
      });
    },
    // -----------------------------------------------------

    putCollect(params) {
      return new Promise((resolve, reject) => {
        getApp().api.putCollect(params).then(res => {
          resolve(res.code)
        })
      })
    }
  }

})